-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Bwoink System Refactor #40989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Bwoink System Refactor #40989
Conversation
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
Make the follow button work all the time |
|
does it NOT do that currently??? |
Nope. Sometimes it just doesn't follow the player at all. Optionally, if the player disconnected, it should follow their last body instead. |
No, it does not. Whenever a user updates their mob (ghosts, polymorph, etc) you need to click off and on again for the entity to be correct. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please keep the quick actions for player interactions. Like follow, kick, ban, etc. I'm afraid that this will ruin the experience that admins have come to expect with the ahelp menu, also the player panel is frankly extremely slow and is unusable till data from the database is loaded in.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, wasn't aware it was on the todo list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My opinion on the actions list is there's definitely a way better way to do it than hardcoded buttons lmao
This is because the entity net ID is cached in the iteration of the of the ahelp panel, the ahelp panel does NOT refresh these when the entity gets removed anymore. The work around here is to select another player in the panel and then change back. So that the entity it tracks is updated to the current one. |
# Conflicts: # Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml # Content.Client/UserInterface/Systems/Bwoink/AHelpUIController.cs # Content.Server/Entry/EntryPoint.cs # Content.Server/IoC/ServerContentIoC.cs
|
As an FYI, this PR could in theory also include Mentor Help. Just requires game admin signoff on how they want it. |
|
I will bring it up to the admins later today to ask about mhelp then |
|
https://memory-conflux.iterator.systems/bwoink%20refactor_1.mp4 Prototype uploading and the separate channels demonstrated. |
im so good at this
Allows to fully deny a requirement, always.
Synchronizes the entire bwoink state for a given session. This can be done in cases where the Conversations change server side (for example VV) and the client is not told about it.
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |

About the PR
This PR refactors the entirety of Admin Help.
Why / Balance
Admin Help was an old old system not up to standards at all. This PR refactors admin help, bringing it to modern codebase standards. This PR is made as a draft PR to get feature requests in and to allow early reviews where possible so that I do not have to refactor a refactor.
You can track current progress on this PR here:
https://jetfish.iterator.systems/projects/0199d82e-3c62-7e94-b61e-2c81db27118e
Use this link to view all current capabilities of the system and planned features.
Technical details
The bulk of the refactor is to atomize admin help. Admin Help is now based on prototypes.
This allows modular adding of features to admin help without hardcoding many of the values.
The core pillar is that admin help is now split into "channels". These channels are shown via a selector in the F1 menu. The intent is that adding something like a "discord relay" is as simple as adding that to the feature of the channel and from there a separate manager goes and handles it.
For how this entire code is now structured:
BwoinkSystemis nowBwoinkManager.SharedBwoinkManagerhandles the shared utility methods.ServerBwoinkManagerandClientBwoinkManagerhandle the relevant implementations on their respective sides.The server and client both hold a
ConversationsDictionary. It is synced to the client, allowing for admins to see the full history of a player. Systems and other managers can easily hook into the admin help system viaMessageReceived.A message object holds the properties as you would expect: Sender, Time, Content and importantly the message flags.
The old system had messages use a complicated case of "just add more properties to the message object". While this works I opted for the more extendable system of adding an Enum to the message object "MessageFlags":
I request that any feature requests and/or concerns regarding design be raised now so that I can fix them.
In its current form, the system works for basic ahelps, but I am still re-implementing the systems of the old ahelp.
Media
https://memory-conflux.iterator.systems/bwoink%20refactor_1.mp4
TODO.
Requirements
Breaking changes
TODO
BwoinkSystem.cswas removed on the client and server. UseBwoinkManager.csChangelog